// 装饰类
@testDec
class Demo {
  // ...
}
function testDec(target) {
  target.isDec = true;
}
alert(Demo.isDec) // true

// 传参的装饰器
function testDec2 (isDec) {
  return function (target) {
    target.isDec = isDec
  }
}
@testDec2(false)
class Demo2{ 
  // ...
}
alert(Demo2.isDec)

// 使用装饰器实现混合
function mixins(...list) {
  return function (target) {
    Object.assign(target.prototype, ...list)
  }
}

const Foo = {
  foo() { alert('foo') }
}

@mixins(Foo)
class MyClass {}

let obj = new MyClass();
obj.foo() // 'foo'